/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.epam.debrecen.hackathon.ai.model;

import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

public abstract class GameState {

	protected List<String> players;
	protected int round = 0;
	protected int battle = 0;
	protected List<String> cities;
	protected List<String> occupiedCities = new LinkedList<String>();

	protected String currentPlayer;
	protected String currentZone;
	protected String protectedCity;
	protected List<String> hand = new LinkedList<String>();
	protected Map<String, List<String>> battleLines = new HashMap<String, List<String>>();
	protected Map<String, Integer> scores = new HashMap<String,Integer>();
	protected List<String> discardedCards = new LinkedList<String>();
	protected List<String> order = new LinkedList<String>();
	protected final String me = "DEPAM";
	protected AbstractAI ai = new ImplementedAI();

	public abstract void occupy(String city);

	public abstract void protect(String city);

	public abstract void setCurrentZone(String city);

	public abstract void dealCards(List<String> cards);

	public abstract void playCard(String card);

	public abstract void pass(String pass);

	public abstract void discardBattleLines();

	public abstract void discardHand();

	public abstract void startGame();

	public abstract void startRound();

	public abstract void startBattle();

	public abstract void endBattle(String string);

	public abstract void endRound();

	public abstract void endGame();

	public abstract void setCurrentPlayer(String player);

	public abstract void setPlayers(List<String> players);

	public abstract void score(String player, int score);

	public abstract void setOrder(List<String> order);

	public abstract String replyAttackedZone();

	public abstract String replySelectedCard();

	public abstract String replyProtectedZone();

	public abstract String replyRetrievedCard();
}
